package top.zywork.dao;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * GoodsInfoSkuPicDAO数据访问接口<br/>
 *
 * 创建于2019-07-12<br/>
 *
 * @author http://zywork.top 王振宇
 * @version 1.0
 */
@Repository
public interface GoodsInfoSkuPicDAO extends BaseDAO {

    @Override
    List<Object> listAllByCondition(@Param("query") Object queryObj);

    @Override
    List<Object> listPageByCondition(@Param("query") Object queryObj);

    @Override
    Long countByCondition(@Param("query") Object queryObj);

    /**
     * 根据一级类目编号和其他查询条件获取商品SKU信息， 如果有多个SKU，则获取编号最小的SKU，同时会获取SKU对应的图片
     * @param categoryId
     * @param queryObj
     * @return
     */
    List<Object> listGoodsSkuByCondition(@Param("categoryId") Long categoryId, @Param("query") Object queryObj);

    /**
     * 根据一级类目编号和其他查询条件对商品SKU信息计数
     * @param categoryId
     * @param queryObj
     * @return
     */
    Long countGoodsSkuByCondition(@Param("categoryId") Long categoryId, @Param("query") Object queryObj);

    /**
     * 根据查询条件获取热门商品SKU信息， 如果有多个SKU，则获取编号最小的SKU，同时会获取SKU对应的图片
     * @param queryObj
     * @return
     */
    List<Object> listHotGoodsSkuByCondition(@Param("query") Object queryObj);

    /**
     * 根据查询条件对热门商品计数
     * @param queryObj
     * @return
     */
    Long countHotGoodsSkuByCondition(@Param("query") Object queryObj);

    /**
     * 根据查询条件获取商品SKU信息， 如果有多个SKU，则获取设置为代理商商品的SKU，同时会获取SKU对应的图片
     * @param queryObj
     * @return
     */
    List<Object> listAgentGoodsSkuByCondition(@Param("query") Object queryObj);

    /**
     * 根据查询条件对商品SKU信息计数
     * @param queryObj
     * @return
     */
    Long countAgentGoodsSkuByCondition(@Param("query") Object queryObj);

    /**
     * 根据三级类目编号和其他查询条件获取商品SKU信息， 如果有多个SKU，则获取编号最小的SKU，同时会获取SKU对应的图片
     * @param categoryId
     * @param queryObj
     * @return
     */
    List<Object> listCategoryGoodsSkuByCondition(@Param("categoryId") Long categoryId, @Param("query") Object queryObj);

    /**
     * 根据三级类目编号和其他查询条件对商品SKU信息计数
     * @param categoryId
     * @param queryObj
     * @return
     */
    Long countCategoryGoodsSkuByCondition(@Param("categoryId") Long categoryId, @Param("query") Object queryObj);

    /**
     * 根据关键词搜索条件获取商品SKU信息， 如果有多个SKU，则获取编号最小的SKU，同时会获取SKU对应的图片
     * @param queryObj
     * @return
     */
    List<Object> listAllGoodsSkuByCondition(@Param("query") Object queryObj);

    /**
     * 根据关键词搜索条件对商品SKU信息计数
     * @param queryObj
     * @return
     */
    Long countAllGoodsSkuByCondition(@Param("query") Object queryObj);
}
